const http=require("http");
const fs=require("fs");
const path=require("path");
const args=process.argv.slice(2);


http.createServer((req,res)=>{
    let filePath;
    if(args.length>0){
        filePath=path.join(__dirname,args[0]);
    }else{
        filePath=path.join(__dirname,'fileReader2.js')
    }
    fs.open(filePath,'r',(err,fd)=>{
        if(err){
            res.writeHead(404,{'content-type':'text/plain'});
            res.end("输入错误");
            return;
        }
        const buffer=Buffer.alloc(1024);
        let content="";
        //文件存在，读取文件
        //fd:文件描述,buffer:缓存对象,从第0个开始读,buffer.length缓存这么多,从第0个开始缓存
        fs.read(fd,buffer,0,buffer.length,0,(err,bytesRead)=>{
            if(err){
                res.writeHead(500,{'content-type':'text/plain'});
                res.end("文件读取错误");
                //关闭文件
                fs.close(fd,(closeErr)=>{
                    if(closeErr){
                        console.log("文件关闭错误",closeErr);
                    }
                });
                return;
            }
            //将能打开的文件读取内容转换为字符串拼接
            content +=buffer.slice(0,bytesRead).toString();
            fs.close(fd,(closeErr)=>{
                res.writeHead(500,{'content-type':'text/plain'});
                res.end("文件关闭失败",closeErr);
                return;
            })
            res.writeHead(200,{'content-type':'text/plain'});
            res.end(content);
        })
    })

}).listen(8081);
console.log("server is listening http://localhost:8081");